Skip to content

Update 1042-S and 1099-NEC templates#1595

Open
nyomanjyotisa wants to merge 2 commits intomainfrom
update-1042-S-template
Open

Update 1042-S and 1099-NEC templates#1595
nyomanjyotisa wants to merge 2 commits intomainfrom
update-1042-S-template

Conversation

@nyomanjyotisa
Copy link
Member

@nyomanjyotisa nyomanjyotisa commented Feb 5, 2026

Issue: https://chat.google.com/room/AAQAWojMDVI/cvwCBw-61Yo/030bMO0dPdk?cls=10

Description

Update tax form PDF templates to 2025 versions and update serializer code to match the new field naming conventions

Problem

  1. The 1042-S and 1099-NEC PDF templates were outdated (2024 versions). The IRS releases new versions of these forms each tax year with updated templates

  2. We don't show "For calendar year" for 1099-DIV, and wrong year format on 1099-NEC

Solution

  1. Updated the 1042-S and 1099-NEC PDF templates to their 2025 versions and modified the corresponding serializers to match the new field naming conventions. 1099-DIV not updated since the current template already the latest template, see https://www.irs.gov/forms-pubs/about-form-1099-div

  2. Updated the "For calendar year" serializer for 1099-DIV and 1099-DEV


Before/After

Before

image

After

1042-S

Screenshot 2026-02-05 at 15 50 52

1099-NEC

image

1099-DIV

image

AI Disclosure

Claude Opus 4.5 for code generation, all code self reviewed.

@nyomanjyotisa nyomanjyotisa marked this pull request as draft February 5, 2026 08:12
"topmostSubform[0].Copy#{tax_form_copy}[0].LeftColumn[0].f1_28[0]" => normalized_tax_field(billing_entity_name),
"topmostSubform[0].Copy#{tax_form_copy}[0].LeftColumn[0].f1_29[0]" => country_code,
"topmostSubform[0].Copy#{tax_form_copy}[0].LeftColumn[0].f1_30[0]" => normalized_street_address,
"topmostSubform[0].Copy#{tax_form_copy}[0].RightColumn[0].f1_31[0]" => normalized_tax_field(full_city_address),
Copy link
Member Author

@nyomanjyotisa nyomanjyotisa Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On the new template LeftCol changed to LeftColumn and RightCol changed to RightColumn. And f1_31 moved from LeftColumn to RightColumn


class TaxDocuments::Form1099necSerializer < TaxDocuments::BaseSerializer
TAX_FORM_COPIES = %w[A 1 B 2 C].freeze
TAX_FORM_COPIES = %w[A 1 B 2].freeze
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy C no longer exist

"topmostSubform[0].Copy#{tax_form_copy}[0].LeftCol[0].f#{page_number}_7[0]" => normalized_tax_field(full_city_address),
# Nonemployee compensation
"topmostSubform[0].Copy#{tax_form_copy}[0].RightColumn[0].f#{page_number}_9[0]" => compensation_amount_for_tax_year(tax_year),
"topmostSubform[0].Copy#{tax_form_copy}[0].RightCol[0].f#{page_number}_9[0]" => compensation_amount_for_tax_year(tax_year),
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LeftColumn changed to LeftCol and RightColumn changed to RightCol


private
def header_for(tax_form_copy)
case tax_form_copy
Copy link
Member Author

@nyomanjyotisa nyomanjyotisa Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

header_for method no longer needed, all copies now use PgHeader

@nyomanjyotisa nyomanjyotisa marked this pull request as ready for review February 5, 2026 08:20
@nyomanjyotisa nyomanjyotisa requested a review from ershad February 5, 2026 08:20

result = {
"topmostSubform[0].Copy#{tax_form_copy}[0].Copy#{tax_form_copy}Header[0].CalendarYear[0].f#{page_number}_1[0]" => formatted_tax_year,
"topmostSubform[0].Copy#{tax_form_copy}[0].CopyHeader[0].CalendarYear[0].f#{page_number}_1[0]" => tax_year.to_s,
Copy link
Member Author

@nyomanjyotisa nyomanjyotisa Feb 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Previously we still use the 2023 serializer which the template already has 20 prefix and the label was changed since 2024 template (this still the latest template)

2023:
Image

2025, Before:

Image

2025, After fix:

Image


{
"topmostSubform[0].Copy#{tax_form_copy}[0].#{header_for(tax_form_copy)}Header[0].CalendarYear[0].f#{page_number}_1[0]" => tax_year.to_s.last(2),
"topmostSubform[0].Copy#{tax_form_copy}[0].PgHeader[0].CalendarYear[0].f#{page_number}_1[0]" => tax_year.to_s,
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2023:

Image

2025, before:

Image

2025, after:

Image

@ershad
Copy link
Member

ershad commented Feb 6, 2026

@nyomanjyotisa _a

  1. Code looks good to me. Just confirming, we filling the correct boxes with the correct numbers, right? Have we verified every number?
  2. Will we update the currently generated forms?

@neetogit-bot neetogit-bot bot assigned nyomanjyotisa and unassigned ershad Feb 6, 2026
@nyomanjyotisa
Copy link
Member Author

@ershad _a

  1. I have checked and compared the after fix and before fix generated forms and it looks good to me. If you got time, can you help to do a final check? Here are the before after files:
Before Fix After Fix
generated_1099div_before_fix.pdf generated_1099div_after_fix.pdf
generated_1099nec_before_fix.pdf generated_1099nec_after_fix.pdf
generated_1042s_before_fix.pdf generated_1042s_after_fix.pdf
  1. Does the IRS accept the tax filling if we use the old version of the form/template? If so we can just regenerate forms for users that contact the support teams about this issue, otherwise if the IRS only accept the tax filling with the latest version of the form/template we should regenerate all

@neetogit-bot neetogit-bot bot assigned ershad and unassigned nyomanjyotisa Feb 9, 2026
@ershad
Copy link
Member

ershad commented Feb 11, 2026

@nyomanjyotisa _a looks good to me from a quick look. Could you confirm with @steveo-es? That would be much better, he would know the answer to the second question too. Please reach out to him via Google Chat, also please provide him context on the changes.

@neetogit-bot neetogit-bot bot assigned nyomanjyotisa and unassigned ershad Feb 11, 2026
@steveo-es
Copy link

Is this for Gumroad and other Flexile clients? Have we already issued these?

@nyomanjyotisa
Copy link
Member Author

@steveo-es Yes this is for all Flexile clients. We have already generated all the forms and already visible to all the users. But then some users contacted the support team about this issue.
Refs:

And for 1099-NEC we already filed them. ref https://chat.google.com/room/AAQAWojMDVI/tDzAeGj8Lrw/tDzAeGj8Lrw?cls=10

@steveo-es
Copy link

If they were all filed and accepted by the IRS, then we should be good to just issue corrections when requested.

@nyomanjyotisa
Copy link
Member Author

Currently only 1099-NEC filed, 1099-DIV and 1042-S not filed yet. But all already issued to users. In this case should we just issue corrections when requested by the users?

And can you help to confirm the After fix in here are correct?

@steveo-es
Copy link

Well the 1042's will need to be reissued since they clearly have the wrong year. And since they haven't been submitted to the IRS yet, probably best we reissue the corrected forms for all three types. If possible with a note that they have been corrected and disregard the prior forms received.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants